#include <iostream>
#include <cerrno>
#include <cstring>
#include <unistd.h>
 
using namespace std;
 
// int main()
// {
//     int pipefd[2];
//     int ret = pipe(pipefd); // 一.创建管道
//     if(ret < 0)
//     {
//         cerr << errno << ": " << strerror(errno) << endl;
//     }
//     cout << "pipefd[0]: " << pipefd[0] << endl; // 3
//     cout << "pipefd[1]: " << pipefd[1] << endl; // 4
 
//     return 0;
// }

int main()
{
    int pipefd[2];
    int ret = pipe(pipefd); // 一.创建管道
    if(ret < 0)
    {
        cerr << errno << ": " << strerror(errno) << endl;
    }
    pid_t id = fork(); // 二.创建子进程
    assert(id != -1);
    if (id == 0) // 子进程，只读，关闭写
    {
        close(pipefd[1]);
 
        // 通信
 
        close(pipefd[0]);
        exit(0);
    }
    close(pipefd[0]); // 父进程，只写，关闭读
 
    // 通信
 
    close(pipefd[1]);
    return 0;
}